# ！/usr/bin/env python
# @filename :密码复杂度.py
# @Time :2024/4/8 15:41
# @Author :limingzhe

"""
1.设定初始评分为2（给个空列表去接改进的点）
2.检查长度是否大于8位
3.检查大小写字母，数字和其他字符
4.判断密码是否由3种以上字符组成
5.检查密码中有没有长度超过3或者等于3的子串重复
6.返回密码评分，要改进的点（前面给个空列表接改进的点）
"""
import re


def passwd_complexity(passwd):
    #初始评分为2
    start = 2
    #给个空列表存储要改进的点
    #检查长度是否超过8
    improve = []
    if len(passwd) > 8:
        start += 1
    else:
        improve.append("长度小于8")
    #检查密码是否包括大小写字母，数字和其他符号
    categories = [r'[a-z]',r'[A-Z]',r'\d',r'[^a-zA-Z0-9\s]']
    category_count = sum([bool(re.search(category, passwd)) for category in categories])
    # upper = False
    # lower = False
    # shuzi = False
    # other = False
    #检查密码是否是3个以上字符组成
    if category_count >= 3:
        start += 1
    else:
        improve.append("密码没有由3种以上字符组成")

    return start, improve
    #检查是否有长度超过或者等于3的子串重复
# 测试
passwd = "aaaaaawwww"
start, improve = passwd_complexity(passwd)
print("密码评分等级：",start)
print("改进点：",improve)

